package com.sunny.leetcode.链表;

/**
 * 输入一个链表的头节点，从尾到头反过来返回每个节点的值（用数组返回）。
 *
 * 示例 1：
 *  输入：head = [1,3,2]
 *  输出：[2,3,1]
 *
 * 限制：
 *  0 <= 链表长度 <= 10000
 *
 * 来源：力扣（LeetCode）
 * 链接：https://leetcode-cn.com/problems/cong-wei-dao-tou-da-yin-lian-biao-lcof
 * 著作权归领扣网络所有。商业转载请联系官方授权，非商业转载请注明出处。
 *
 * @author Sunny
 * @date 2020/7/5
 */
public class _剑指Offer_06_从尾到头打印链表 {

    /**
     * 思路:
     *  根据节点size创建出相同容量的数组
     *  从数组的最后一个索引位置开始倒序存放节点的数据
     *
     * @param head 头节点
     * @author Sunny
     * @date 2020/7/5
     */
    public int[] reversePrint(ListNode head) {
        ListNode node = head;
        int count = 0;
        while (node != null) {
            ++count;
            node = node.next;
        }

        int[] ints = new int[count];
        node = head;
        for (int i = count - 1; i >=0; --i) {
            ints[i] = node.val;
            node = node.next;
        }
        return ints;
    }
}
